Modern operating systems drive many of today's technology-based innovations by offering a platform for both hardware and software development while serving many diverse needs. These systems have evolved from simplistic file management systems to more complex workstations that provide high-end performance at reasonable cost. Moreover, such systems often include multi-processing architectures, high-speed memory, advanced peripheral devices, a variety of system libraries/components to aid software development, and intricate/interleaved bus architectures, for example. At the heart of these systems exists sophisticated operating systems that manage not only computer-related hardware but, a vast array of software components having various relationships. Such components are commonly described in terms of objects or classes that have multi-tiered relationships (e.g., a hierarchical arrangement) for files and directories that are found in many data management systems.
Furthermore, transaction processing systems have paved the way for many ideas in distributed computing and fault-tolerant computing. Accordingly, transaction processing systems have introduced distributed data for reliability, availability, performance, fault tolerant storage and processes—in addition to—contributing to a client-server model and remote procedure call for distributed computation. Due to the nature of operating system industry, a large number of device drivers are typically written by third parties (who are typically hardware owners), rather than being written by the operating system manufacturer. Outside third parties typically do not have access to base team development resources available within the manufacturer, and such restrictions adversely affect rapid delivery of device drivers to markets. Problems can further exacerbated because many of such drivers operate in an unprotected kernel mode of the operating system (e.g., ring 0), which often implies that the slightest coding error may cause a system crash, or a corruption to files and/or data.
In addition, many large software systems operate in a highly threaded model, to support “plug in” software models and extend the function of the system. In general, since operating systems are highly threaded, plug in device drivers associated therewith are also highly threaded, hence adding to complexities involved. At the same time, graphics adapters that are associated with these systems continue to handle an increased number of tasks. Today, parallel engines exposed by such Graphics Processing Units (GPUs) are expected to fully and effectively manage efficient playback of video as well as managing multiple adapters. Accordingly, a graphical user interface (GUI) commonly is associated with a process (or an engine) that executes computer-executable instructions in response to requests and/or information provided by the GUI. Nonetheless, in various types of applications, resources for the GPUs are not efficiently employed.